package cn.iocoder.yudao.module.alipay.controller.admin.infoauthaliapp.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;

import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

/**
 * 授权应用信息 Base VO，提供给添加、修改、详细的子 VO 使用
 * 如果子 VO 存在差异的字段，请不要添加到这里，影响 Swagger 文档生成
 */
@Data
public class InfoAuthAliAppBaseVO {

    @Schema(description = "小程序编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "20850")
    @NotNull(message = "小程序编码不能为空")
    private Long appId;

    @Schema(description = "授权第三方应用小程序id", requiredMode = Schema.RequiredMode.REQUIRED, example = "21621")
    @NotNull(message = "授权第三方应用小程序id不能为空")
    private Long thirdAppId;

    @Schema(description = "小程序名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
    @NotNull(message = "小程序名称不能为空")
    private String appName;

    @Schema(description = "应用logo", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "应用logo不能为空")
    private String appLogo;

    @Schema(description = "状态")
    private String appState;

    @Schema(description = "自动提审")
    private String autoReview;

    @Schema(description = "授权token")
    private String appAuthToken;

    @Schema(description = "授权返回code")
    private String appAuthCode;

    @Schema(description = "授权日期", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "授权日期不能为空")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime authTime;

    @Schema(description = "授权人用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "20632")
    @NotNull(message = "授权人用户id不能为空")
    private Long authUserId;

    @Schema(description = "系统用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "20632")
    @NotNull(message = "系统用户id不能为空")
    private Long sysUserId;

    @Schema(description = "线上版本")
    private String onlineVersion;

    @Schema(description = "开发版本")
    private String developmentVersion;

    @Schema(description = "用户统计", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "用户统计不能为空")
    private Long usageQuantity;

    @Schema(description = "驳回原因")
    private String rejectMessage;

    private String operateStatue;

}
